﻿//
//  Monkey Manager
//  Copyright (C) 2012 Victor Tereschenko
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//     
// ========================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace ManagerDB.SQLiteDB
{
    /// <summary>
    /// Reads list of storages
    /// </summary>
    class StoragesReader
    {
        /// <summary>
        /// Reads list of storages.
        /// </summary>
        /// <param name="path"></param>
        /// <returns>List of storages or null in case of not exist file of incorrect format.</returns>
        public static Storage[] Read(string path)
        {
            if (!System.IO.File.Exists(path))
                return null;
            XmlDocument doc = new XmlDocument();
            doc.Load(path);

            List<Storage> storages = new List<Storage>();
            XmlNode rootNode = doc.SelectSingleNode("/storages");
            XmlNodeList storagesNodes = doc.SelectNodes("//storage");
            foreach (XmlNode node in storagesNodes)
            {
                int id = int.Parse(node.Attributes["id"].Value);
                string storagePath = node.Attributes["path"].Value;
                Storage storage = new Storage(storagePath, id);
                storages.Add(storage);
            }

            return storages.ToArray();
        }

        /// <summary>
        /// Creates default list of storages
        /// </summary>
        /// <returns></returns>
        public static Storage[] CreateDefault()
        {
            return new Storage[] { new Storage(@"c:\video\", 1) };
        }
    }
}
